//promise  回调地狱

// 第一关 -- >  第二关钥匙 

// 第二关 -- >  第三关钥匙  

// 第三关 -- >  第四关钥匙  

//....

// function play(key,time,callback){
//     setTimeout(() => {
//         key++; //2
//         callback(key)
//     },time)
// }

// play(1,10,(two) => {
//     //第二关的钥匙
//     play(two,100,(three) => {
//         //第三关的钥匙
//         play(three,1000,(four) => {
//             //第四关的钥匙
//             play(four,5000,() => {
//                 //....
//             })
//         })
//     })
// })

//promise  构造函数  容器
/**
 * new Promise((resolve,reject) => {
 *  
 * })
 * 
 * .then()
 * 
 * .catch()
 * 
 * .finnaly()  //
 * 
*/

function play(key,time){
    return new Promise((resolve,reject) => {
        setTimeout(() => {
            key++;
            resolve(key);
        },time)
    })
}

// play(1,10).then((two) => {
//     console.log(two);
//     return play(two,100)
// }).then((three) => {
//     console.log(three)
//     return play(three,3000)
// }).then((four) => {
//     console.log(four)
//     return play(four,2000)
// })
//....

//ES7 提出了  async await
//async 返回值是promise对象  用promise.resolve(123)

async function fun(){
    let two = await play(1,10);
    console.log(two);
    let three = await play(two,1000);
    console.log(three)
    let four = await play(three,2000);
    console.log(four)
    //....
    return 123
}

//

console.log(fun());

//作业：

// 1.phpStudy navicat postman

// 2.koa 链接数据库能把数据从数据库请求回来

// 3.promise async await 理解